package com.nuoniu.sibanyun.service.crm;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.nuoniu.sibanyun.entity.crm.CrmCustomer;
import com.nuoniu.sibanyun.entity.crm.CrmLinkman;
import com.nuoniu.sibanyun.entity.crm.CrmLinkmanHistoryRecord;
import com.nuoniu.sibanyun.entity.crm.dto.NotTaskingLinkManSearchDto;
import com.nuoniu.sibanyun.entity.dto.CrmLinkmanDto;
import com.nuoniu.sibanyun.entity.dto.CrmLinkmanSaveDto;
import com.nuoniu.sibanyun.userThread.UserInfo;

import java.util.Collection;
import java.util.List;
import java.util.Set;

/**
 * <p>
 * 客户联系人 服务类
 * </p>
 *
 * @author baiqiang
 * @since 2020-06-15
 */
public interface ICrmLinkmanService extends IService<CrmLinkman> {
    /**
     * 条件查询DTO
     * @param crmLinkmanDto
     * @return
     */
    Page<CrmLinkman> listByDto(Page page, CrmLinkmanDto crmLinkmanDto);
    /**
     * 设置KP(关键人)
     * @param linkManId
     */
    void setKP(Long linkManId,Long crmId);
    /**
     * 保存联系人
     * @author 小啊刚
     * @date 2021-07-07
     */
    void saveLinkman(CrmLinkmanSaveDto linkmanSaveDto);


    CrmLinkman getByName(String name, Long crmId);

    /**
     * 停用联系人
     * @author 小啊刚
     * @date 2021-11-10
     */
    void disable(String ids);

    /**
     * 获取联系人历史操作记录
     * @author 小啊刚
     * @date 2022-01-21
     */
    Page<CrmLinkmanHistoryRecord> pageHistoryList(Page page, Integer crmId);

    /**
     * 查询 可以添加任务的 联系人
     * @param notTaskingLinkManSearchDto
     * @return
     */
    Page<CrmLinkman> pageNotTaskingLinkMan(NotTaskingLinkManSearchDto notTaskingLinkManSearchDto);
    /**
     * 更新 联系人外呼状态
     * @param linkManIds
     * @param taskId
     * @param isTasking
     */
    void updateCallTaskState(UserInfo userInfo,Set<Long> linkManIds, Integer taskId, boolean isTasking);

    /**
     * 更新 联系人外呼状态(指定任务)
     * @param taskIds
     */
    void updateCallTaskStateByCloseTask(UserInfo userInfo,List<Long> taskIds);

    /**
     * 查询 联系人的手机号码
     * @param linkManIds
     * @return
     */
    List<CrmLinkman> listCrmLinkmanMobile(Collection<Number> linkManIds);

}
